﻿using System;
using System.Windows.Forms;
using VideoClub.Business;
using VideoClub.Entities;

namespace VideoClub.UI.Actores
{
    public partial class FrmEditarActor : Form
    {
        public FrmEditarActor()
        {
            InitializeComponent();
        }

        private String posicionado = "";
        private Actor actorPorModificar = new Actor();
        private Actor actorExistente = new Actor();

        public void posicionarAlta()
        {
            posicionado = "Alta";
        }

        public void AgregarActor()
        {
            try
            {
                var actorAInsertar = new Actor();
                actorAInsertar.pnombre = txtNombre.Text;
                actorAInsertar.papellido = txtApellido.Text;
                actorExistente = ActorBO.InsertarActor(actorAInsertar);
                
                if(actorExistente != null)
                {
                    MessageBox.Show("El actor se inserto correctamente.");
                    Close();
                }
                else
                {
                    MessageBox.Show(String.Format("El actor que desea insertar ya existe. \nNombre:{0}\nApellido:{1}", actorAInsertar.pnombre, actorAInsertar.papellido), "Alerta", MessageBoxButtons.OK,MessageBoxIcon.Error);  
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al insertar actor.");
                throw ex;
            }
        }
        
        public void posicionarModificacion(Actor actorAModificar)
        {
            posicionado = "Modificada";
            txtApellido.Text = actorAModificar.papellido.Trim();
            txtNombre.Text = actorAModificar.pnombre.Trim();
            actorPorModificar = actorAModificar;
        }

        private void ModificarActor()
        {
            try
            {
                var actorADModificar = new Actor();
                actorADModificar.pnombre = txtNombre.Text;
                actorADModificar.papellido = txtApellido.Text;
                actorADModificar.pidActor = actorPorModificar.pidActor;
                actorExistente = ActorBO.ActualizarActor(actorADModificar);
                
                if(actorExistente != null)
                {
                    MessageBox.Show("El actor se actualizo correctamente.");
                    Close();
                }
                else
                {
                    MessageBox.Show(String.Format("El actor que desea insertar ya existe. \nNombre:{0}\nApellido:{1}", actorADModificar.pnombre, actorADModificar.papellido), "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Error);  
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al actualizar actor.");
                throw ex;
            }
        }

        private void Aceptar_Click(object sender, EventArgs e)
        {
            switch (posicionado)
            {
                case "Alta":
                    AgregarActor();
                    break;
                case "Modificada":
                    ModificarActor();
                    break;
            }
        }

        private void Cancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void txtNombre_KeyPress(object sender, KeyPressEventArgs e)
        {
            Validaciones.Validaciones.SoloLetras(e);
        }

        private void txtApellido_KeyPress(object sender, KeyPressEventArgs e)
        {
            Validaciones.Validaciones.SoloLetras(e);
        }
    }
}
